# Carnal Realms event-ending personality rewards.
# Queue effects defer the reward until the final screen of a chain. Every
# resolver uses a single if/else_if ladder, so one ending can add at most one
# personality, virtue, or vice trait.

cr_gain_diplomacy_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = gregarious } } add_trait = gregarious }
	else_if = { limit = { NOT = { trait = kind } } add_trait = kind }
	else_if = { limit = { NOT = { trait = honest } } add_trait = honest }
}

cr_gain_diplomacy_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = shy } } add_trait = shy }
	else_if = { limit = { NOT = { trait = proud } } add_trait = proud }
	else_if = { limit = { NOT = { trait = deceitful } } add_trait = deceitful }
}

cr_gain_martial_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = brave } } add_trait = brave }
	else_if = { limit = { NOT = { trait = diligent } } add_trait = diligent }
	else_if = { limit = { NOT = { trait = patient } } add_trait = patient }
}

cr_gain_martial_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = craven } } add_trait = craven }
	else_if = { limit = { NOT = { trait = wroth } } add_trait = wroth }
	else_if = { limit = { NOT = { trait = slothful } } add_trait = slothful }
}

cr_gain_stewardship_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = diligent } } add_trait = diligent }
	else_if = { limit = { NOT = { trait = patient } } add_trait = patient }
	else_if = { limit = { NOT = { trait = temperate } } add_trait = temperate }
}

cr_gain_stewardship_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = slothful } } add_trait = slothful }
	else_if = { limit = { NOT = { trait = greedy } } add_trait = greedy }
	else_if = { limit = { NOT = { trait = arbitrary } } add_trait = arbitrary }
}

cr_gain_intrigue_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = patient } } add_trait = patient }
	else_if = { limit = { NOT = { trait = diligent } } add_trait = diligent }
	else_if = { limit = { NOT = { trait = just } } add_trait = just }
}

cr_gain_intrigue_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = paranoid } } add_trait = paranoid }
	else_if = { limit = { NOT = { trait = deceitful } } add_trait = deceitful }
	else_if = { limit = { NOT = { trait = arbitrary } } add_trait = arbitrary }
}

cr_gain_learning_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = patient } } add_trait = patient }
	else_if = { limit = { NOT = { trait = diligent } } add_trait = diligent }
	else_if = { limit = { NOT = { trait = humble } } add_trait = humble }
}

cr_gain_learning_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = proud } } add_trait = proud }
	else_if = { limit = { NOT = { trait = slothful } } add_trait = slothful }
	else_if = { limit = { NOT = { trait = arbitrary } } add_trait = arbitrary }
}

cr_gain_carnal_good_ending_trait_effect = {
	if = {
		limit = { NOT = { trait = lustful } }
		cr_grant_lustful_effect = yes
	}
	else_if = { limit = { NOT = { trait = gregarious } } add_trait = gregarious }
	else_if = { limit = { NOT = { trait = kind } } add_trait = kind }
}

cr_gain_social_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = gregarious } } add_trait = gregarious }
	else_if = { limit = { NOT = { trait = kind } } add_trait = kind }
	else_if = { limit = { NOT = { trait = charitable } } add_trait = charitable }
}

cr_gain_compassion_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = kind } } add_trait = kind }
	else_if = { limit = { NOT = { trait = charitable } } add_trait = charitable }
	else_if = { limit = { NOT = { trait = patient } } add_trait = patient }
}

cr_gain_charitable_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = charitable } } add_trait = charitable }
	else_if = { limit = { NOT = { trait = kind } } add_trait = kind }
	else_if = { limit = { NOT = { trait = humble } } add_trait = humble }
}

cr_gain_honest_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = honest } } add_trait = honest }
	else_if = { limit = { NOT = { trait = just } } add_trait = just }
	else_if = { limit = { NOT = { trait = humble } } add_trait = humble }
}

cr_gain_just_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = just } } add_trait = just }
	else_if = { limit = { NOT = { trait = honest } } add_trait = honest }
	else_if = { limit = { NOT = { trait = diligent } } add_trait = diligent }
}

cr_gain_humble_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = humble } } add_trait = humble }
	else_if = { limit = { NOT = { trait = patient } } add_trait = patient }
	else_if = { limit = { NOT = { trait = charitable } } add_trait = charitable }
}

cr_gain_temperate_good_ending_trait_effect = {
	if = { limit = { NOT = { trait = temperate } } add_trait = temperate }
	else_if = { limit = { NOT = { trait = patient } } add_trait = patient }
	else_if = { limit = { NOT = { trait = diligent } } add_trait = diligent }
}

cr_gain_greedy_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = greedy } } add_trait = greedy }
	else_if = { limit = { NOT = { trait = envious } } add_trait = envious }
	else_if = { limit = { NOT = { trait = arbitrary } } add_trait = arbitrary }
}

cr_gain_cruel_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = cruel } } add_trait = cruel }
	else_if = { limit = { NOT = { trait = wroth } } add_trait = wroth }
	else_if = { limit = { NOT = { trait = arbitrary } } add_trait = arbitrary }
}

cr_gain_proud_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = proud } } add_trait = proud }
	else_if = { limit = { NOT = { trait = arbitrary } } add_trait = arbitrary }
	else_if = { limit = { NOT = { trait = wroth } } add_trait = wroth }
}

cr_gain_slothful_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = slothful } } add_trait = slothful }
	else_if = { limit = { NOT = { trait = craven } } add_trait = craven }
	else_if = { limit = { NOT = { trait = greedy } } add_trait = greedy }
}

cr_gain_chastity_bad_ending_trait_effect = {
	if = {
		limit = {
			NOT = { trait = chaste }
		}
		add_trait = chaste
	}
	else_if = { limit = { NOT = { trait = shy } } add_trait = shy }
	else_if = { limit = { NOT = { trait = proud } } add_trait = proud }
}

cr_gain_deceitful_bad_ending_trait_effect = {
	if = { limit = { NOT = { trait = deceitful } } add_trait = deceitful }
	else_if = { limit = { NOT = { trait = paranoid } } add_trait = paranoid }
	else_if = { limit = { NOT = { trait = arbitrary } } add_trait = arbitrary }
}

cr_clear_pending_ending_trait_effect = {
	clr_character_flag = cr_ending_trait_pending
	clr_character_flag = cr_ending_trait_pending_bad
	clr_character_flag = cr_ending_trait_diplomacy_good
	clr_character_flag = cr_ending_trait_diplomacy_bad
	clr_character_flag = cr_ending_trait_martial_good
	clr_character_flag = cr_ending_trait_martial_bad
	clr_character_flag = cr_ending_trait_stewardship_good
	clr_character_flag = cr_ending_trait_stewardship_bad
	clr_character_flag = cr_ending_trait_intrigue_good
	clr_character_flag = cr_ending_trait_intrigue_bad
	clr_character_flag = cr_ending_trait_learning_good
	clr_character_flag = cr_ending_trait_learning_bad
	clr_character_flag = cr_ending_trait_carnal_good
	clr_character_flag = cr_ending_trait_social_good
	clr_character_flag = cr_ending_trait_compassion_good
	clr_character_flag = cr_ending_trait_charitable_good
	clr_character_flag = cr_ending_trait_honest_good
	clr_character_flag = cr_ending_trait_just_good
	clr_character_flag = cr_ending_trait_humble_good
	clr_character_flag = cr_ending_trait_temperate_good
	clr_character_flag = cr_ending_trait_greedy_bad
	clr_character_flag = cr_ending_trait_cruel_bad
	clr_character_flag = cr_ending_trait_proud_bad
	clr_character_flag = cr_ending_trait_slothful_bad
	clr_character_flag = cr_ending_trait_chastity_bad
	clr_character_flag = cr_ending_trait_deceitful_bad
}

cr_queue_diplomacy_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_diplomacy_good }
cr_queue_diplomacy_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_diplomacy_bad }
cr_queue_martial_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_martial_good }
cr_queue_martial_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_martial_bad }
cr_queue_stewardship_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_stewardship_good }
cr_queue_stewardship_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_stewardship_bad }
cr_queue_intrigue_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_intrigue_good }
cr_queue_intrigue_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_intrigue_bad }
cr_queue_learning_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_learning_good }
cr_queue_learning_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_learning_bad }
cr_queue_carnal_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_carnal_good }
cr_queue_social_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_social_good }
cr_queue_compassion_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_compassion_good }
cr_queue_charitable_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_charitable_good }
cr_queue_honest_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_honest_good }
cr_queue_just_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_just_good }
cr_queue_humble_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_humble_good }
cr_queue_temperate_good_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_temperate_good }
cr_queue_greedy_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_greedy_bad }
cr_queue_cruel_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_cruel_bad }
cr_queue_proud_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_proud_bad }
cr_queue_slothful_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_slothful_bad }
cr_queue_chastity_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_chastity_bad }
cr_queue_deceitful_bad_ending_trait_effect = { cr_clear_pending_ending_trait_effect = yes set_character_flag = cr_ending_trait_pending set_character_flag = cr_ending_trait_pending_bad set_character_flag = cr_ending_trait_deceitful_bad }

cr_resolve_pending_ending_trait_effect = {
	if = { limit = { has_character_flag = cr_ending_trait_diplomacy_good } cr_gain_diplomacy_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_diplomacy_bad } cr_gain_diplomacy_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_martial_good } cr_gain_martial_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_martial_bad } cr_gain_martial_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_stewardship_good } cr_gain_stewardship_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_stewardship_bad } cr_gain_stewardship_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_intrigue_good } cr_gain_intrigue_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_intrigue_bad } cr_gain_intrigue_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_learning_good } cr_gain_learning_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_learning_bad } cr_gain_learning_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_carnal_good } cr_gain_carnal_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_social_good } cr_gain_social_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_compassion_good } cr_gain_compassion_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_charitable_good } cr_gain_charitable_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_honest_good } cr_gain_honest_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_just_good } cr_gain_just_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_humble_good } cr_gain_humble_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_temperate_good } cr_gain_temperate_good_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_greedy_bad } cr_gain_greedy_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_cruel_bad } cr_gain_cruel_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_proud_bad } cr_gain_proud_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_slothful_bad } cr_gain_slothful_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_chastity_bad } cr_gain_chastity_bad_ending_trait_effect = yes }
	else_if = { limit = { has_character_flag = cr_ending_trait_deceitful_bad } cr_gain_deceitful_bad_ending_trait_effect = yes }
	cr_clear_pending_ending_trait_effect = yes
}

# Sexual conclusions are virtuous in CR, but they cannot overwrite a failed
# chain outcome with a positive trait.
cr_resolve_carnal_ending_trait_effect = {
	custom_tooltip = {
		text = CR_EVENT_TT_CARNAL_ENDING
		hidden_tooltip = {
			if = {
				limit = { has_character_flag = cr_ending_trait_pending_bad }
				cr_resolve_pending_ending_trait_effect = yes
			}
			else = {
				cr_clear_pending_ending_trait_effect = yes
				cr_gain_carnal_good_ending_trait_effect = yes
			}
	}
	}
}

cr_resolve_nonsexual_ending_trait_effect = {
	custom_tooltip = {
		text = CR_EVENT_TT_NONSEXUAL_ENDING
		hidden_tooltip = {
			if = {
				limit = { has_character_flag = cr_ending_trait_pending }
				cr_resolve_pending_ending_trait_effect = yes
			}
			else = { cr_gain_temperate_good_ending_trait_effect = yes }
		}
	}
}
